#ifndef SQLUnaryExpr_HEADER_H
#define SQLUnaryExpr_HEADER_H


#include "../SQLExpr.h"
#include "../SQLExprImpl.h"

#include "SQLUnaryOperator.h"

class SQLASTVisitor;

class SQLUnaryExpr : virtual public SQLExprImpl
{

private:
  // static long serialVersionUID = 1L;
  SQLExpr_ptr expr;
  SQLUnaryOperator_ptr xoperator;

public:
  SQLUnaryExpr();
  virtual ~SQLUnaryExpr();

  SQLUnaryExpr(SQLUnaryOperator_ptr xoperator, SQLExpr_ptr expr);
  SHAREDOBJECT(SQLUnaryExpr);

  SQLUnaryOperator_ptr getOperator();

  void setOperator(SQLUnaryOperator_ptr xoperator);

  SQLExpr_ptr getExpr();

  void setExpr(SQLExpr_ptr expr);

  // int hashCode();
  // BOOL_ptr equals(Object obj);
protected:
  void accept0(SQLASTVisitor_ptr visitor);
};
// typedef boost::shared_ptr<SQLUnaryExpr> SQLUnaryExpr_ptr;
#endif
